#include <netinet/in.h>
#include <sys/socket.h>
#include <strings.h>
#include <stdio.h>
#include <stdlib.h>

#include "../base.h"

int err_quit(char *argv);

int
main(int argc, char **argv)
{
    int sockfd, n;
    char recvline[MAXLINE + 1];
    struct sockaddr_in servaddr;

    if(argc != 2)
        err_quit("usage: a.out <IPaddress>");

    if( (sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
        err_quit("socket error");

    bzero(&servaddr, sizeof(servaddr));
    servaddr.sin_family = AF_INET;
    servaddr.sin_port = htons(13);
    if(inet_pton(AF_INET, argv[1], &servaddr.sin_addr) <= 0){
        err_quit("inet_pton error for %s"); /* TODO argument error */
    }

    if(connect(sockfd, (struct sockaddr_in *)&servaddr, sizeof(servaddr)) < 0)
        err_quit("connect error");

    while( (n = read(sockfd, recvline, MAXLINE)) > 0){
        recvline[n] = 0;    /* null terminal */
        if(fputs(recvline, stdout) == EOF)
            err_quit("fputs error");
    }
    if(n < 0)
        err_quit("read error");

    exit(0);
}
